iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
自我挑戰組

30天淺談機器學習系列 第 12

Keras的權重產生以及其介紹

  • 分享至 

  • xImage
  •  

參考網站:Keras官方指南

  如果想要看各個神經元最初設定的權重,輸入以下程式:

layer = layers.Dense(4)
print(layer.weights)

  但出現的結果是:

[]

  這是因為在keras程式中,必須先有輸入值才會產生權重,不然會出現空集合。因此如果用以下方式:

layer = layers.Dense(4)
y = layer(tf.ones((3,4,2)))
print(layer.weights)

  則會產生權重,而且有趣的是,每次執行都會產生不一樣的權重,這也表示每次在訓練都會以不同值作為訓練,不必自己手動調整:

[<tf.Variable 'dense_5/kernel:0' shape=(2, 4) dtype=float32, numpy=
array([[-0.03356194,  0.3569517 , -0.8341913 ,  0.73365426],
       [-0.10828733,  0.30690932, -0.19653058,  0.02371168]],
      dtype=float32)>, <tf.Variable 'dense_5/bias:0' shape=(4,) dtype=float32, numpy=array([0., 0., 0., 0.], dtype=float32)>]
[<tf.Variable 'dense_6/kernel:0' shape=(2, 4) dtype=float32, numpy=
array([[ 0.50712013, -0.64136124, -0.3829267 ,  0.5257573 ],
       [-0.7684462 ,  0.03535271,  0.4861548 ,  0.5680456 ]],
      dtype=float32)>, <tf.Variable 'dense_6/bias:0' shape=(4,) dtype=float32, numpy=array([0., 0., 0., 0.], dtype=float32)>]

  輸出結果會發現有兩個tf.Variable,前面是只權重的部分,後面是偏差值。
  在權重部分中,我看到kernel,以為是只作業系統上的軟體和硬體之間的溝通,後來才想到:「這不是作業系統啊」,因此就調查了一下為何機器學習中有kernel。
  在機器學習裡,kernel可以用來協助區分資料,使得可以更快速建立基本架構,一般來說在低維度的空間,資料可能會混雜在同一個區塊中,很難找到適合的線性方式,因此使用kernel可以將基本資料切換成多個維度,從平面變成立體的架構,就有可能可以找到適合的線性方式,不必用非線性的方式了。
  上述提到,總結kernel有兩個重點:樣本的相似性以及加權。不得不說機器學習中有很重要的概念:要得到自己想要的結果,那就在訓練集中先找到相似的樣本,將那些樣本拿來訓練,就能得到想要的結果了。因此kernel就可以被用來找到距離最近點進行訓練、區分,且距離越近的點所設定的權重會越大,表示相似度越高,最後在用線性回歸調整權重數值,以訓練玩結果。
  輸出結果中的array中的各個數字就是各個神經元的權重,在上一篇激勵函數中有提到,因為只會看最後一個數來決定該輸入層有多少個神經元,因此權重的個數僅有8個,若要表示輸入層,則如圖(一)。
https://ithelp.ithome.com.tw/upload/images/20211007/201407224s4Y5Bqpvs.png
  以tf.ones(3,4,2)格式會是這樣:

[[[1. 1.]
  [1. 1.]
  [1. 1.]
  [1. 1.]]

 [[1. 1.]
  [1. 1.]
  [1. 1.]
  [1. 1.]]

 [[1. 1.]
  [1. 1.]
  [1. 1.]
  [1. 1.]]]

  則圖(一)的輸入層有兩個神經元,第一個會取矩陣當中的第一行數字,第二個則取第二行。
  最後偏差值的部分,偏差因為是先把資料乘上權重且加總完畢之後,才會加入偏差值,因此可以看到偏差的個數是根據layer個數而定,且目前每個值都是設定為0。


上一篇
激勵函數
下一篇
Epoch(時期)、Batch size(批次)、Iteration(迭代)、Learning rate
系列文
30天淺談機器學習13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言